package android.slc.query;

import android.slc.query.entity.QDateInfo;

import java.time.LocalDate;

public class QDateInfoVerifyUtils {
    /**
     * 验证是否存在查询条件
     *
     * @param qDateInfo
     */
    public static void verify(QDateInfo qDateInfo) {
        if (qDateInfo == null) {
            throw new RuntimeException("请选择查询条件");
        }
    }

    /**
     * 校验年月是否存在
     *
     * @param qDateInfo
     */
    public static void verifyYm(QDateInfo qDateInfo) {
        if (qDateInfo.getYear() == null) {
            throw new RuntimeException("请选择年份");
        }
        if (qDateInfo.getMonth() == null) {
            throw new RuntimeException("请选择月份");
        }
    }

    /**
     * 检验年月日是否存在
     *
     * @param qDateInfo
     */
    public static void verifyYmd(QDateInfo qDateInfo) {
        verifyYm(qDateInfo);
        if (qDateInfo.getDay() == null) {
            throw new RuntimeException("请选择日期");
        }
    }

    /**
     * 校验年月日是否合法
     *
     * @param qDateInfo
     */
    public static void verifyYmdLicit(QDateInfo qDateInfo) {
        verifyYmdLicit(qDateInfo, "查询时间不得大于当前时间");
    }

    public static void verifyYmdLicit(QDateInfo qDateInfo, String errorMsg) {
        LocalDate currentLocalDate = LocalDate.now();
        LocalDate targetLocalDate = currentLocalDate.withYear(qDateInfo.getYear()).withMonth(qDateInfo.getMonth());
        if (qDateInfo.getDay() != null) {
            targetLocalDate = targetLocalDate.withDayOfMonth(qDateInfo.getDay());
        }
        if (targetLocalDate.isAfter(currentLocalDate)) {
            throw new RuntimeException(errorMsg);
        }
    }
}
